// async function fn() {
//   return '我是async函数';
// }

// console.log('async:', fn());

// (async function() {
//   const p = Promise.resolve('success');
//   const data = await p; // await就相当于Promise.then, 故data就是then的参数
//   console.log(data);    // 这里的代码为then中回调的内容
// })();

// (async function() {
//   const p = Promise.reject('err');
//   // await + try...catch 相当于 Promise.catch
//   try {
//     const res = await p;
//     console.log(res);
//   } catch(ex) {  // ex 来源于reject()里面的数
//     console.error(ex); 
//   }
// })()   

async function async1 () {
  console.log('async1 start');      // 2
  await async2();
  console.log('async1 end');        // 6
}
async function async2 () {
  console.log('async2');            // 3
}
console.log('script start');        // 1
setTimeout(function () {
  console.log('setTimeout');        // 8
}, 0)
async1()
new Promise (function (resolve) {
  console.log('promise1')           // 4
  resolve()
}).then(function () {
  console.log('promise2')           // 7
})

console.log('script end')           // 5


